
        <html>
			<head>
			     <title>WireShark黑客发现之旅（5）—扫描探测 - 聚锋实验室</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/tips/8660">http://drops.wooyun.org/tips/8660</a></h1>
				
      <p>
        <p><strong>作者：</strong>Mr.Right、K0r4dji <strong>申明：</strong>文中提到的攻击方式仅为曝光、打击恶意网络攻击行为，切勿模仿，否则后果自负。</p>

<h1>0x00 简单介绍</h1>

<hr />

<p>“知己知彼，百战不殆。”扫描探测，目的就是“知彼”，为了提高攻击命中率和效率，基本上常见的攻击行为都会用到扫描探测。</p>

<p>扫描探测的种类和工具太多了，攻击者可以选择现有工具或自行开发工具进行扫描，也可以根据攻击需求采用不同的扫描方式。本文仅对<code>Nmap</code>常见的几种扫描探测方式进行分析。如：地址扫描探测、端口扫描探测、操作系统扫描探测、漏洞扫描探测（不包括<code>Web</code>漏洞，后面会有单独文章介绍<code>Web</code>漏洞扫描分析）。</p>

<!--more-->

<h1>0x01 地址扫描探测</h1>

<hr />

<p>地址扫描探测是指利用<code>ARP</code>、<code>ICMP</code>请求目标网段，如果目标网段没有过滤规则，则可以通过回应消息获取目标网段中存活机器的<code>IP</code>地址和<code>MAC</code>地址，进而掌握拓扑结构。</p>

<p>如：<code>192.1.14.235</code>向指定网段发起<code>ARP</code>请求，如果<code>IP</code>不存在，则无回应。</p>

<p><img src="http://drops.wooyun.org/wp-content/uploads/2015/09/%E5%9B%BE%E7%89%871.jpg" alt="enter image description here" /></p>

<p>如果<code>IP</code>存在，该<code>IP</code>会通过<code>ARP</code>回应攻击<code>IP</code>，发送自己的<code>MAC</code>地址与对应的<code>IP</code>。</p>

<p><img src="http://drops.wooyun.org/wp-content/uploads/2015/09/%E5%9B%BE%E7%89%872.jpg" alt="enter image description here" /></p>

<p><code>ARP</code>欺骗适用范围多限于内网，通过互联网进行地址扫描一般基于<code>Ping</code>请求。</p>

<p>如：<code>192.1.14.235</code>向指定网段发起<code>Ping</code>请求，如果<code>IP</code>存在，则返回<code>Ping reply</code>。</p>

<p><img src="http://drops.wooyun.org/wp-content/uploads/2015/09/%E5%9B%BE%E7%89%873.jpg" alt="enter image description here" /></p>

<p><img src="http://drops.wooyun.org/wp-content/uploads/2015/09/%E5%9B%BE%E7%89%874.jpg" alt="enter image description here" /></p>

<h1>0x02 端口扫描探测</h1>

<hr />

<p>端口扫描是扫描行为中用得最多的，它能快速获取目的机器开启端口和服务的情况。常见的端口扫描类型有全连接扫描、半连接扫描、秘密扫描和<code>UDP</code>扫描。</p>

<h3>1、全连接扫描</h3>

<p>全连接扫描调用操作系统提供的<code>connect()</code>函数，通过完整的三次<code>TCP</code>连接来尝试目标端口是否开启。全连接扫描是一次完整的TCP连接。</p>

<p><strong>1）如果目标端口开启</strong> 攻击方：首先发起<code>SYN</code>包；</p>

<p>目标：返回<code>SYN ACK</code>；</p>

<p>攻击方：发起<code>ACK</code>；</p>

<p>攻击方：发起<code>RST ACK</code>结束会话。</p>

<p><strong>2）如果端口未开启</strong> 攻击方：发起<code>SYN</code>包；</p>

<p>目标：返回<code>RST ACK</code>结束会话。</p>

<p>如：<code>192.1.14.235</code>对<code>172.16.33.162</code>进行全连接端口扫描，首先发起<code>Ping</code>消息确认主机是否存在，然后对端口进行扫描。</p>

<p><img src="http://drops.wooyun.org/wp-content/uploads/2015/09/%E5%9B%BE%E7%89%875.jpg" alt="enter image description here" /></p>

<p>下图为扫描到<code>TCP3389</code>端口开启的情况。</p>

<p><img src="http://drops.wooyun.org/wp-content/uploads/2015/09/%E5%9B%BE%E7%89%876.jpg" alt="enter image description here" /></p>

<p>下图为扫描到<code>TCP1723</code>端口未开启的情况。</p>

<p><img src="http://drops.wooyun.org/wp-content/uploads/2015/09/%E5%9B%BE%E7%89%877.jpg" alt="enter image description here" /></p>

<h3>2、半连接扫描</h3>

<p>半连接扫描不使用完整的<code>TCP</code>连接。攻击方发起<code>SYN</code>请求包；如果端口开启，目标主机回应<code>SYN ACK</code>包，攻击方再发送<code>RST</code>包。如果端口未开启，目标主机直接返回<code>RST</code>包结束会话。</p>

<p>如：<code>192.1.14.235</code>对<code>172.16.33.162</code>进行半连接端口扫描，首先发起<code>Ping</code>消息确认主机是否存在，然后对端口进行扫描。</p>

<p><img src="http://drops.wooyun.org/wp-content/uploads/2015/09/%E5%9B%BE%E7%89%878.jpg" alt="enter image description here" /></p>

<p>扫描到<code>TCP80</code>端口开启。</p>

<p><img src="http://drops.wooyun.org/wp-content/uploads/2015/09/%E5%9B%BE%E7%89%879.jpg" alt="enter image description here" /></p>

<p><code>TCP23</code>端口未开启。</p>

<p><img src="http://drops.wooyun.org/wp-content/uploads/2015/09/%E5%9B%BE%E7%89%8710.jpg" alt="enter image description here" /></p>

<h3>3、秘密扫描TCPFIN</h3>

<p><code>TCP FIN</code>扫描是指攻击者发送虚假信息，目标主机没有任何响应时认为端口是开放的，返回数据包认为是关闭的。</p>

<p>如下图，扫描方发送<code>FIN</code>包，如果端口关闭则返回<code>RST ACK</code>包。</p>

<p><img src="http://drops.wooyun.org/wp-content/uploads/2015/09/%E5%9B%BE%E7%89%8711.jpg" alt="enter image description here" /></p>

<h3>4、秘密扫描TCPACK</h3>

<p><code>TCP ACK</code>扫描是利用标志位<code>ACK</code>，而<code>ACK</code>标志在<code>TCP</code>协议中表示确认序号有效，它表示确认一个正常的<code>TCP</code>连接。但是在<code>TCP AC</code>K扫描中没有进行正常的<code>TCP</code>连接过程，实际上是没有真正的<code>TCP</code>连接。所以使用<code>TCP ACK</code>扫描不能够确定端口的关闭或者开启，因为当发送给对方一个含有<code>ACK</code>表示的<code>TCP</code>报文的时候，都返回含有<code>RST</code>标志的报文，无论端口是开启或者关闭。但是可以利用它来扫描防火墙的配置和规则等。</p>

<p><img src="http://drops.wooyun.org/wp-content/uploads/2015/09/%E5%9B%BE%E7%89%8712.jpg" alt="enter image description here" /></p>

<h3>5、UDP端口扫描</h3>

<p>前面的扫描方法都是针对<code>TCP</code>端口，针对<code>UDP</code>端口一般采用<code>UDP ICMP</code>端口不可达扫描。</p>

<p>如：<code>192.1.14.235</code>对<code>172.16.2.4</code>发送大量<code>UDP</code>端口请求，扫描其开启<code>UDP</code>端口的情况。</p>

<p><img src="http://drops.wooyun.org/wp-content/uploads/2015/09/%E5%9B%BE%E7%89%8713.jpg" alt="enter image description here" /></p>

<p>如果对应的<code>UDP</code>端口开启，则会返回<code>UDP</code>数据包。</p>

<p><img src="http://drops.wooyun.org/wp-content/uploads/2015/09/%E5%9B%BE%E7%89%8714.jpg" alt="enter image description here" /></p>

<p>如果端口未开启，则返回“<code>ICMP</code>端口不可达”消息。</p>

<p><img src="http://drops.wooyun.org/wp-content/uploads/2015/09/%E5%9B%BE%E7%89%8715.jpg" alt="enter image description here" /></p>

<h1>0x03 操作系统的探测</h1>

<hr />

<p><code>NMAP</code>进行操作系统的探测主要用到的是<code>OS</code>探测模块，使用<code>TCP/IP</code>协议栈指纹来识别不同的操作系统和设备。<code>Nmap</code>内部包含了<code>2600</code>多种已知操作系统的指纹特征，根据扫描返回的数据包生成一份系统指纹，将探测生成的指纹与<code>nmap-os-db</code>中指纹进行对比，查找匹配的操作系统。如果无法匹配，则以概率形式列举出可能的系统。</p>

<p>如：<code>192.168.1.50</code>对<code>192.168.1.90</code>进行操作系统的扫描探测。首先发起<code>Ping</code>请求，确认主机是否存在。</p>

<p><img src="http://drops.wooyun.org/wp-content/uploads/2015/09/%E5%9B%BE%E7%89%8716.jpg" alt="enter image description here" /></p>

<p>发起<code>ARP</code>请求，获取主机<code>MAC</code>地址。</p>

<p><img src="http://drops.wooyun.org/wp-content/uploads/2015/09/%E5%9B%BE%E7%89%8717.jpg" alt="enter image description here" /></p>

<p>进行端口扫描。</p>

<p><img src="http://drops.wooyun.org/wp-content/uploads/2015/09/%E5%9B%BE%E7%89%8718.jpg" alt="enter image description here" /></p>

<p>根据综合扫描情况，判断操作系统类型。</p>

<p><img src="http://static.wooyun.org//drops/20150914/2015091405440268973.png" alt="enter image description here" /></p>

<h1>0x04 漏洞扫描</h1>

<hr />

<p>操作系统的漏洞探测种类很多，本文针对“<code>smb-check-vulns</code>”参数就<code>MS08-067</code>、<code>CVE2009-3103</code>、<code>MS06-025</code>、<code>MS07-029</code>四个漏洞扫描行为进行分析。</p>

<p>攻击主机：<code>192.168.1.200</code>（Win7），目标主机：<code>192.168.1.40</code>（WinServer 03）；</p>

<p><code>Nmap</code>扫描命令：<code>nmap --script=smb-check-vulns.nse --script-args=unsafe=1 192.168.1.40</code>。</p>

<p><img src="http://static.wooyun.org//drops/20150914/2015091405440283665.png" alt="enter image description here" /></p>

<h3>1、端口扫描</h3>

<p>漏洞扫描前，开始对目标主机进行端口扫描。</p>

<p><img src="http://drops.wooyun.org/wp-content/uploads/2015/09/%E5%9B%BE%E7%89%8721.jpg" alt="enter image description here" /></p>

<h3>2、SMB协议简单分析</h3>

<p>由于这几个漏洞多针对SMB服务，下面我们简单了解一下<code>NAMP</code>扫描行为中的SMB命令。</p>

<p>SMB Command:<code>Negotiate Protocol</code>(0x72)：SMB协议磋商</p>

<p>SMB Command: <code>Session Setup AndX</code>(0x73)：建立会话，用户登录</p>

<p>SMB Command: <code>Tree Connect AndX</code> (0x75)：遍历共享文件夹的目录及文件</p>

<p>SMB Command: <code>NT Create AndX</code> (0xa2)：打开文件，获取文件名，获得读取文件的总长度</p>

<p>SMB Command: <code>Write AndX</code> (0x2f)：写入文件，获得写入的文件内容</p>

<p>SMB Command:<code>Read AndX</code>(0x2e)：读取文件，获得读取文件内容</p>

<p>SMB Command: <code>Tree Disconnect</code>(0x71)：客户端断开</p>

<p>SMB Command: <code>Logoff AndX</code>(0x74)：退出登录</p>

<p><img src="http://drops.wooyun.org/wp-content/uploads/2015/09/%E5%9B%BE%E7%89%8722.jpg" alt="enter image description here" /></p>

<h3>3、MS08-067漏洞</h3>

<p><strong>（1）MS08-067漏洞扫描部分源码如下：</strong></p>

<pre><code>function check_ms08_067(host)
    if(nmap.registry.args.safe ~= nil) then
        return true, NOTRUN
    end
    if(nmap.registry.args.unsafe == nil) then
        return true, NOTRUN
    end
    local status, smbstate
    local bind_result, netpathcompare_result

    -- Create the SMB session  \\创建SMB会话
    status, smbstate = msrpc.start_smb(host, "\\\\BROWSER")
    if(status == false) then
        return false, smbstate
    end

    -- Bind to SRVSVC service
    status, bind_result = msrpc.bind(smbstate, msrpc.SRVSVC_UUID, msrpc.SRVSVC_VERSION, nil)
    if(status == false) then
        msrpc.stop_smb(smbstate)
        return false, bind_result
    end

    -- Call netpathcanonicalize
--  status, netpathcanonicalize_result = msrpc.srvsvc_netpathcanonicalize(smbstate, host.ip, "\\a", "\\test\\")

    local path1 = "\\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\..\\n"
    local path2 = "\\n"
    status, netpathcompare_result = msrpc.srvsvc_netpathcompare(smbstate, host.ip, path1, path2, 1, 0)

    -- Stop the SMB session
    msrpc.stop_smb(smbstate)
</code></pre>

<p><strong>（2）分析</strong></p>

<p>尝试打开“<code>\\BROWSER</code>”目录，下一包返回成功。</p>

<p><img src="http://drops.wooyun.org/wp-content/uploads/2015/09/%E5%9B%BE%E7%89%8723.jpg" alt="enter image description here" /></p>

<p>同时还有其它尝试，均成功，综合判断目标存在<code>MS08-067</code>漏洞。通过<code>Metasploit</code>进行漏洞验证，成功溢出，获取Shell。</p>

<p><img src="http://drops.wooyun.org/wp-content/uploads/2015/09/%E5%9B%BE%E7%89%8724.png" alt="enter image description here" /></p>

<h3>4、CVE-2009-3103漏洞</h3>

<p><strong>（1）CVE-2009-3103漏洞扫描部分源码如下：</strong></p>

<pre><code>host = "IP_ADDR", 445
buff = (
"\x00\x00\x00\x90" # Begin SMB header: Session message
"\xff\x53\x4d\x42" # Server Component: SMB
"\x72\x00\x00\x00" # Negociate Protocol
"\x00\x18\x53\xc8" # Operation 0x18 &amp; sub 0xc853
"\x00\x26"# Process ID High: --&gt; :) normal value should be "\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xfe"
"\x00\x00\x00\x00\x00\x6d\x00\x02\x50\x43\x20\x4e\x45\x54"
"\x57\x4f\x52\x4b\x20\x50\x52\x4f\x47\x52\x41\x4d\x20\x31"
"\x2e\x30\x00\x02\x4c\x41\x4e\x4d\x41\x4e\x31\x2e\x30\x00"
"\x02\x57\x69\x6e\x64\x6f\x77\x73\x20\x66\x6f\x72\x20\x57"
"\x6f\x72\x6b\x67\x72\x6f\x75\x70\x73\x20\x33\x2e\x31\x61"
"\x00\x02\x4c\x4d\x31\x2e\x32\x58\x30\x30\x32\x00\x02\x4c"
"\x41\x4e\x4d\x41\x4e\x32\x2e\x31\x00\x02\x4e\x54\x20\x4c"
"\x4d\x20\x30\x2e\x31\x32\x00\x02\x53\x4d\x42\x20\x32\x2e"
"\x30\x30\x32\x00"
)
</code></pre>

<p><strong>（2）分析</strong></p>

<p>十六进制字符串“<code>0x00000000</code>到<code>202e30303200</code>”请求，通过<code>ASCII</code>编码可以看出是在探测<code>NTLM</code>和<code>SMB</code>协议的版本。无响应，无此漏洞。</p>

<p><img src="http://drops.wooyun.org/wp-content/uploads/2015/09/%E5%9B%BE%E7%89%8725.jpg" alt="enter image description here" /></p>

<h3>5、MS06-025漏洞</h3>

<p><strong>（1）MS06-025漏洞扫描部分源码如下：</strong></p>

<pre><code>--create the SMB session
--first we try with the "\router" pipe, then the "\srvsvc" pipe.
local status, smb_result, smbstate, err_msg
status, smb_result = msrpc.start_smb(host, msrpc.ROUTER_PATH)
if(status == false) then
err_msg = smb_result
status, smb_result = msrpc.start_smb(host, msrpc.SRVSVC_PATH) --rras is also accessible across SRVSVC pipe
if(status == false) then
    return false, NOTUP --if not accessible across both pipes then service is inactive
end
end
smbstate = smb_result
--bind to RRAS service
local bind_result
status, bind_result = msrpc.bind(smbstate, msrpc.RASRPC_UUID, msrpc.RASRPC_VERSION, nil)
if(status == false) then 
msrpc.stop_smb(smbstate)
return false, UNKNOWN --if bind operation results with a false status we can't conclude anything.
End
</code></pre>

<p><strong>（2）分析</strong></p>

<p>先后尝试去连接“<code>\router</code>”、“ <code>\srvsvc</code>”路径，均报错，无<code>RAS RPC</code>服务。</p>

<p><img src="http://drops.wooyun.org/wp-content/uploads/2015/09/%E5%9B%BE%E7%89%8726.jpg" alt="enter image description here" /></p>

<p><img src="http://drops.wooyun.org/wp-content/uploads/2015/09/%E5%9B%BE%E7%89%8727.jpg" alt="enter image description here" /></p>

<h3>6、MS07-029漏洞</h3>

<p><strong>（1）MS07-029漏洞扫描部分源码如下：</strong></p>

<pre><code>function check_ms07_029(host)
    --check for safety flag  
if(nmap.registry.args.safe ~= nil) then
        return true, NOTRUN
end
if(nmap.registry.args.unsafe == nil) then
return true, NOTRUN
end
    --create the SMB session
    local status, smbstate
    status, smbstate = msrpc.start_smb(host, msrpc.DNSSERVER_PATH)
    if(status == false) then
        return false, NOTUP --if not accessible across pipe then the service is inactive
    end
    --bind to DNSSERVER service
    local bind_result
    status, bind_result = msrpc.bind(smbstate, msrpc.DNSSERVER_UUID, msrpc.DNSSERVER_VERSION)
    if(status == false) then
        msrpc.stop_smb(smbstate)
        return false, UNKNOWN --if bind operation results with a false status we can't conclude anything.
    end
    --call
    local req_blob, q_result
    status, q_result = msrpc.DNSSERVER_Query(
        smbstate, 
        "VULNSRV", 
        string.rep("\\\13", 1000), 
        1)--any op num will do
    --sanity check
    msrpc.stop_smb(smbstate)
    if(status == false) then
        stdnse.print_debug(
            3,
            "check_ms07_029: DNSSERVER_Query failed")
        if(q_result == "NT_STATUS_PIPE_BROKEN") then
            return true, VULNERABLE
        else
            return true, PATCHED
        end
    else
        return true, PATCHED
    end
end
</code></pre>

<p><strong>（2）分析</strong></p>

<p>尝试打开“<code>\DNSSERVER</code>”，报错，未开启<code>DNS RPC</code>服务。</p>

<p><img src="http://drops.wooyun.org/wp-content/uploads/2015/09/%E5%9B%BE%E7%89%8728.jpg" alt="enter image description here" /></p>

<h1>0x05 总结</h1>

<hr />

<p>1、扫描探测可以说是所有网络中遇到最多的攻击，因其仅仅是信息搜集而无实质性入侵，所以往往不被重视。但扫描一定是有目的的，一般都是攻击入侵的前兆。</p>

<p>2、修补漏洞很重要，但如果在扫描层面进行防御，攻击者就无从知晓你是否存在漏洞。</p>

<p>3、扫描探测一般都无实质性通信行为，同时大量重复性动作，所以在流量监测上完全可以做到阻止防御。</p>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          